﻿@{
    var X = Html.X();
}

@(
 X.Window()
        .ID("winEmitirComprobante")
        .Title(string.Format("Emitir comprobante, {0}",ViewData["cliente"]))
        .Resizable(false)
        .Icon(Icon.UserAdd)
        .Layout(LayoutType.Fit)
        .Width(480)
        .Modal(true)
        .Constrain(true)
        .BodyPadding(5)
        .Items(
            X.Hidden().ID("proxyUrlPrinter").Value(ViewData["proxyUrlPrinter"]),
            X.FormPanel()
                .ID("formEmitirComprobante")
                .Layout(LayoutType.Form)
                .BodyPadding(5)
                .FieldDefaults(fieldDefaults => { fieldDefaults.LabelWidth = 130; })
                .Items(
                    X.Hidden().ID("liquidacion_id"),
                    X.ComboBox()
                        .FieldLabel("Liquidacion")
                        .AllowBlank(false)
                        .Editable(false)
                        .QueryMode(DataLoadMode.Local)
                        .ForceSelection(true)
                        .DisplayField("fecha_hora_inicio")
                        .ValueField("liquidacion_id")
                        .EmptyText("Seleccione...")
                        .ListConfig(
                            Html.X().BoundList()
                                .LoadingText("Buscando...")
                                .ItemTpl(
                                    Html.X().XTemplate()
                                        .Html(@<text>
                                        <div>{fecha_hora_inicio:date("d F Y h:m A")}</div>
                                        </text>)
                                )
                        )
                        .Store(
                            X.StoreFor(typeof(PcaCaja.BOL.oLiquidacion))
                                .ID("storeLiquidacionesActivas")
                                .AutoLoad(true)
                                .Proxy(
                                    X.AjaxProxy()
                                        .Url(Url.Action("GetListActivos", "LiquidacionUsuario", new { area = "Caja" }))
                                        .Reader(X.JsonReader().RootProperty("data"))
                                )
                        )
                        .Listeners(l =>
                        {
                            l.AfterRender.Fn = "onAfterRender";
                            l.Select.Fn = "onSelect";
                            l.Blur.Fn = "onBlur";
                        }),
                        
                    X.TextField()
                        .ID("detalle")
                        .AllowBlank(false)
                        .FieldLabel("Detalle")
                        .Cls("upperTxt")
                        .Value(ViewData["detalle"]),

                    X.ComboBox().ID("tipoMedioPagoId")
                        .QueryMode(DataLoadMode.Local)
                        .FieldLabel("Medio de pago") 
                        .AllowBlank(false) 
                        .ForceSelection(true)
                        .DisplayField("nombre_corto")
                        .ValueField("codigo")
                        .EmptyText("Seleccione...")
                        .Store(
                            X.StoreFor(typeof(PcaCore.BOL.Tablas.oVwTMoneda))
                                .AutoLoad(true)
                                .Proxy(
                                    X.AjaxProxy()
                                        .Url(Url.Action("GetAllTiposMediosPago", "Tablas", new { area = "" }))
                                        .Reader(X.JsonReader().RootProperty("data"))
                                )
                        )
                        .Listeners(l =>
                        {
                            l.SpecialKey.Handler = @"if(e.getKey() == e.ENTER){ 
                                                    e.stopEvent();
                                                        if(item.isValid()){
                                                            App.precio_venta.focus();    
                                                        }
                                                    }";
                        }),

                    X.Hidden().ID("monedaId").Value(ViewData["monedaId"]),
                    X.NumberField()
                        .ID("precio_venta")
                        .Value(ViewData["precioVenta"])
                        .FieldLabel(string.Format("Monto {0}", ViewData["siglasMoneda"]))  
                        .Listeners(l => {
                            l.Change.Handler = "App.efectivo_percibido.setMinValue(newValue)";
                            l.SpecialKey.Handler = @"if(e.getKey() == e.ENTER){ 
                                                        e.stopEvent();
                                                        if(item.isValid()){
                                                            App.efectivo_percibido.focus();    
                                                        }
                                                    }";
                        })
                        .MinValue(0.1),
                    X.NumberField()
                        .ID("efectivo_percibido")
                        .AllowBlank(false)
                        .FieldLabel("Efectivo")
                        .LabelStyle("font-weight: bold;")
                        .FieldStyle("font-weight: bold;")
                        .MinValue(Convert.ToDouble(ViewData["precioVenta"]))
                )
                .Buttons(
                    X.Button()
                        .Text("Emitir")
                        .Icon(Icon.Disk)
                        .DirectEvents(de =>
                        {
                            de.Click.Url = Url.Action("EmitirComprobante", "PagoAbonado");
                            de.Click.Method = HttpMethod.POST;
                            de.Click.ExtraParams.Add(new Parameter { Name = "clienteId", Value = "App.clienteId.getValue()", Mode = ParameterMode.Raw });
                            de.Click.Before = @"var valid = App.formEmitirComprobante.getForm().isValid(),
                                                    proxyUrl = App.proxyUrlPrinter.getValue();
                                                Ext.Ajax.request({
                                                    url: proxyUrl,
                                                    method: 'GET',
                                                    success: function (response) {
                                                        console.log('printer ok');
                                                    },
                                                    failure: function (response) {
                                                        console.log('false');
                                                        PcaGlobal.showError('Error al comunicarse con la impresora');
                                                        return false;
                                                    },
                                                    scope: this
                                                });
                                                return valid";
                            de.Click.Success = @"App.GridPagosAbonados.getSelectionModel().deselectAll();
                                                 App.storePagosAbonados.load();
                                                 App.winEmitirComprobante.close();
                                                 if(result.printTicket){
                                                    PcaGlobal.fnImprimirTicket(result);
                                                 }";
                            de.Click.Failure = "PcaGlobal.showError(result.msg);";
                            de.Click.EventMask.ShowMask = true;
                            de.Click.EventMask.Msg = "Registrando...";
                        })
                )
        )
)
